package com.obelisco.vista.seguridad;

import java.util.ArrayList;
import java.util.List;
import java.util.ResourceBundle;

import com.obelisco.modelo.data.CarpetaTransaccion;
import com.obelisco.modelo.servicios.seguridad.IServicioAdministrarCarpetas;
import com.obelisco.vista.componentes.ComponenteDatosListener;
import com.obelisco.vista.componentes.PaneSubirImagen;
import com.obelisco.vista.componentes.TipoFuncion;
import com.obelisco.vista.controles.BindingSelectField;
import com.obelisco.vista.controles.BindingTextArea;
import com.obelisco.vista.controles.BindingTextField;

import echopointng.ContentPaneEx;
import nextapp.echo2.app.ContentPane;
import nextapp.echo2.app.TextField;
import nextapp.echo2.app.TextArea;
import nextapp.echo2.app.SelectField;
import nextapp.echo2.app.Label;
import nextapp.echo2.extras.app.TabPane;
import nextapp.echo2.app.Column;
import nextapp.echo2.app.Insets;
import nextapp.echo2.app.Extent;
import nextapp.echo2.extras.app.layout.TabPaneLayoutData;
import nextapp.echo2.app.Grid;
import nextapp.echo2.app.layout.ColumnLayoutData;
import nextapp.echo2.app.layout.GridLayoutData;
import nextapp.echo2.app.Alignment;

public class PaneCarpeta extends ContentPaneEx implements
		ComponenteDatosListener {

	private ResourceBundle resourceBundle;

	private BindingTextField txtNombre;

	private BindingTextArea txtDescripcion;

	//private BindingSelectField cmbDepende;

	private com.obelisco.vista.controles.Label lblNombreDepende;
	
	private IServicioAdministrarCarpetas servicioAdministrarCarpetas;
	
	private PaneSubirImagen icono;

	/**
	 * Creates a new <code>PaneCarpeta</code>.
	 */
	public PaneCarpeta() {
		super();

		// Add design-time configured components.
		initComponents();
	}

	public void onCancelar() {
		// TODO Auto-generated method stub
		onConsultar(carpeta);
	}

	public void onConfirmarCambios(Object objeto, TipoFuncion tipo,
			String nombre) {
		// TODO Auto-generated method stub
		if (tipo == TipoFuncion.INCLUIR) {

			carpeta.getPadre().getHijos().add(carpeta);

		}
		onConsultar(carpeta);
	}

	public void onConfirmarEliminacion(Object object) {
		// TODO Auto-generated method stub

	}

	public void onConsultar(Object objeto) {
		// TODO Auto-generated method stub
		txtNombre.setEnabled(false);
		txtDescripcion.setEnabled(false);
		//cmbDepende.setEnabled(false);
		icono.setEnabled(false);
	}

	public void onCrear() {
		// TODO Auto-generated method stub
	}

	public void onFuncionPersonalizada(Object objeto, TipoFuncion funcion,
			String nombre) {

	}

	public void onIncluir(Object objeto) {
		// TODO Auto-generated method stub
		txtNombre.setEnabled(true);
		txtDescripcion.setEnabled(true);
		//cmbDepende.setEnabled(true);
		icono.setEnabled(true);
	}

	public void onInicializar() {
		// TODO Auto-generated method stub
//		txtNombre.setText(carpeta.getNombre());
//		txtDescripcion.setText(carpeta.getDescripcion());

		txtNombre.setBinding(carpeta, "nombre");
		txtDescripcion.setBinding(carpeta, "descripcion");
		
		//List padres = servicioAdministrarCarpetas.buscarTodasCarpetas();
		//cmbDepende.setBinding(padres, carpeta, "padre");
		if (carpeta.getPadre() != null) {
			lblNombreDepende.setText(carpeta.getPadre().getNombre() + "  ("
					+ carpeta.getPadre().getRuta() + ")");
		}
		
		icono.setBinding(carpeta.getIcono(), "contenido");

	}

	public void onModificar(Object objeto) {
		// TODO Auto-generated method stub
		txtNombre.setEnabled(true);
		txtDescripcion.setEnabled(true);
		icono.setEnabled(true);
		//cmbDepende.setEnabled(true);
	}

	private CarpetaTransaccion carpeta;

	private Column colDatos;

	private ContentPane paneLogo;

	public void onObjetoEntidad(Object objeto) {
		// TODO Auto-generated method stub
		this.carpeta = (CarpetaTransaccion) objeto;
	}

	public boolean onValidarDatos(Object objeto, TipoFuncion tipo, String nombre) {
		// TODO Auto-generated method stub
		servicioAdministrarCarpetas.validar(carpeta);
		return true;
	}

	/**
	 * Configures initial state of component. WARNING: AUTO-GENERATED METHOD.
	 * Contents will be overwritten.
	 */
	private void initComponents() {
		TabPane tabPane1 = new TabPane();
		tabPane1.setActiveTabIndex(0);
		tabPane1.setStyleName("Obelisco.TabPane");
		add(tabPane1);
		colDatos = new Column();
		colDatos.setInsets(new Insets(new Extent(5, Extent.PX)));
		TabPaneLayoutData colDatosLayoutData = new TabPaneLayoutData();
		colDatosLayoutData.setTitle("Datos Generales");
		colDatos.setLayoutData(colDatosLayoutData);
		tabPane1.add(colDatos);
		Grid grdDatos = new Grid();
		grdDatos.setStyleName("Obelisco.Grid");
		ColumnLayoutData grdDatosLayoutData = new ColumnLayoutData();
		grdDatosLayoutData.setInsets(new Insets(new Extent(5, Extent.PX),
				new Extent(10, Extent.PX)));
		grdDatos.setLayoutData(grdDatosLayoutData);
		colDatos.add(grdDatos);
		Label lblNombre = new Label();
		lblNombre.setText("Nombre");
		grdDatos.add(lblNombre);

		txtNombre = new BindingTextField(200);
		// txtNombre.setStyleName("Obelisco.TextField");
		// txtNombre.setWidth(new Extent(200,Extent.PX));
		grdDatos.add(txtNombre);

		Label lblDescripcion = new Label();
		lblDescripcion.setText("Descripcion");
		GridLayoutData lblDescripcionLayoutData = new GridLayoutData();
		lblDescripcionLayoutData.setAlignment(new Alignment(Alignment.LEFT,
				Alignment.TOP));
		lblDescripcion.setLayoutData(lblDescripcionLayoutData);
		grdDatos.add(lblDescripcion);
		txtDescripcion = new BindingTextArea(300, 50);
		txtDescripcion.setStyleName("Obelisco.TextArea");
		grdDatos.add(txtDescripcion);

		Label lblDepende = new Label();
		lblDepende.setText("Depende de");
		grdDatos.add(lblDepende);
		lblNombreDepende = new com.obelisco.vista.controles.Label();
		grdDatos.add(lblNombreDepende);
		
//		lblDepende = new Label();
//		lblDepende.setText("Depende de");
//		grdDatos.add(lblDepende);
//		cmbDepende = new BindingSelectField(200);
//		cmbDepende.setStyleName("Obelisco.SelectField");
//		grdDatos.add(cmbDepende);
		
		paneLogo = new ContentPane();
		TabPaneLayoutData paneLogoLayoutData = new TabPaneLayoutData();
		paneLogoLayoutData.setTitle("Logo");
		paneLogo.setLayoutData(paneLogoLayoutData);

		icono = new PaneSubirImagen();
		paneLogo.add(icono);
		
		tabPane1.add(paneLogo);
	}

	public IServicioAdministrarCarpetas getServicioAdministrarCarpetas() {
		return servicioAdministrarCarpetas;
	}

	public void setServicioAdministrarCarpetas(
			IServicioAdministrarCarpetas servicioAdministrarCarpetas) {
		this.servicioAdministrarCarpetas = servicioAdministrarCarpetas;
	}

	public void onListaParametros(List arg0) {
		// TODO Auto-generated method stub
		
	}
}
